作者:violet | 来源:互联网 | 2023-05-25 01:50
一.基本原理
是一种分析简化数据集的技术
PCA从原始变量出发,通过旋转变化(即原始变量的线性组合)构建出一组新的,互不相关的新变量,这些变量尽可能多的解释原始数据之间的差异性(即数据内在的结构),它们就称为原始数据的主成分。由于这些变量不相关,因此他们无重叠的各自解释一部分差异性。依照每个变量解释的差异性大小排序,它们称为第一主成分,第二主成分,以此类推
PCA旨在找到数据中的主成分,并利用这些主成分表征原始数据,从而达到将为的目的
工作原理可以由两个角度解释
- 最大化投影方差(让数据在主轴上投影的方差尽可能大)
- 最小化平方误差(样本点到超平面的垂直距离足够近)
做法是:数据中心化之后,对样本数据协方差矩阵进行特征分解,选取前d个最大的特征值对应的特征向量,即可将数据从原来的p维降到d维,也可根据奇异值分解来求解主成分
二.优缺点
优点
- 降低数据的复杂型,识别最重要的多个特征
- 使得数据集更易使用
- 降低算法的计算开销
- 去除噪声
- 使得结果更容易理解
- 仅仅需要方差衡量信息量,不受数据集以外的因素影响
- 各主成分之间正交,可以消除原始数据成分间的相互影响的因素
- 计算方法简单,主要运算是特征值分解,易于实现
缺点
- 不一定需要,且可能损失有用信息
- 主成分各特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强
- 方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响
- PCA原理主要是为了消除变量之间的相关性,并且假设这种相关性是线性的,对于非线性的依赖关系则不能得到很好的结果
- PCA假设变量服从高斯分布,当变量不服从高斯分布(如均匀分布)时,会发生尺度缩放与旋转
- 对降维最终得到的数目,也就是潜在的隐变量的数目,不能很好地估计
三.适用场景
- 经常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特征
- 常应用在文本处理,自然语言处理,人脸识别,图片识别等领域
- 可以做在数据预处理阶段非常重要的一环
- 它是一种非监督式的降维方法,因此适用于不带标签的数据集,对于带有标签的可以采用LDA
- 数据分布是位于相同平面上,数据中存在线性结构
- 数据量较大的数据集:数据量大是指数据记录多和维度多两种情况,PCA对大型数据集的处理效率高
- 更少的正则化处理:选择较多的主成分将导致更少的平滑,因为能保留很多特征,减少正则化
- 根据方差自主控制特征数量:最大的主成分的数量会小于或等于特征的数量,即PCA可以输出全部的特征,具体取决于选择特征中解释的方差比例
四.常见面试题
1.为什么PCA不推荐用来避免过拟合?
- PCA最大的问题就在于它是无监督的
- PCA是高维环境下能想到的最直接的方案。比如人脸识别,维度往往成千上万,但识别身份的话,每个人样本最多也就几十,过拟合现象是很严重的。由此产生了人脸识别早期研究中影响极大的工作eigenface,其实就是先用PCA对人脸图像进行降维,然后再训练分类器
- 但PCA是无监督的,它虽然能解决过拟合问题,但又会带来欠拟合问题。拿人脸识别来说,eigenface虽然能训练出识别能力尚可的分类器,但因为分类信息并不一定存在于前几个主成分上,所以用前几个主成分来做分类的话,会丢失后面变化细微的主成分上存在的大量分类信息。正因为如此,之后又出现了fisherface等有监督降维工作,识别能力也因此提高了很多
- 深度学习也是这样,pre-training阶段很多训练都是无监督的,其实和PCA异曲同工,但之后一定要有进一步的fine-tuning,把无监督提取出来的特征transfer到我们的目标任务上,这样得到的特征才真正work
- 所以说,类似于PCA和auto-encoder这样的无监督方法,提取的特征不会太差,但也不会太好,它最大的作用就是总结出一些关于X的较高层次的抽象知识,为之后的有监督训练提供一个比原始特征空间更好的起点。实际上,无监督最具优势之处就在于它的通用性:不管y是什么,只要有x就行,之后可以在各种各样的y上进一步训练。有证据显示,人类在婴儿时期也是先有一个无监督学习阶段,然后才是各种有监督学习
2.简单解释一下什么是维数灾难?
- 维数灾难泛指在处理高维数据时所产生的问题。当数据真的很高维的时候(特征很多的时候),高维空间里的数据互相之间将有着相似的距离。也就是没有谁和谁更近,谁和谁更远的概念了。距离的概念在高维空间就失效了,这也就意味着,需要更多的样本,才能得到确定性
- 随着特征的数量上升,那么数据的可能性(组合)也随之上升,使用固定百分比训练数据也以几何速度增长
- 随着数据的维度上升,收敛速率会大幅度下降
3.降维的目的是什么?
降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方法
4.PCA的具体计算步骤?
- 对数据进行归一化处理
- 计算归一化后的数据集的协方差矩阵
- 计算协方差矩阵的特征值和特征向量
- 保留最重要的k个特征(通常k要小于n)
- 找出k个特征值相应的特征向量
- 将m*n的数据集乘以k个n维的特征向量(n*k),得到最后降维的数据
5.PCA中的第一,第二主成分分别是什么?怎么确定?
主成分分析是设法将原来众多具有一定相关性(比如p个指标),重新组合成一组新的互相无关的综合指标来代替原来的指标
主成分分析,是考察多个变量间相关性的一种多元统计方法,研究如何通过少数几个主成分来揭示多个变量间的内部结构,即从原始变量中导出少数几个主成分,使它们尽可能多地保留原始变量的信息,且彼此之间互不相关,通常数学上的处理就是将原来的p个指标作线性组合,作为新的综合指标
最经典的做法就是:
- 用F1(选取的第一个线性组合,即第一个综合指标)的方差来表达,即Var(F1) 越大,表示F1包含的信息越多。因此在所有的线性组合中选取的F1应该是方差最大的,故称F1为第一主成分
- 如果第一主成分不足以代表原来p个指标的信息,再考虑选取F2即选第二个线性组合,为了有效地反映原来信息,F1已有的信息就不需要再出现在F2中,用数学语言表达就是要求Cov(F1,F2) = 0,则称F2为第二主成分
- 以此类推可以构造出第三,第四,...,第p个主成分
6.PCA降维的准则?
- 最近重构性:样本集中所有点,重构后的点距离原来的点的误差之和最小
- 最大可分性:样本在低维空间的投影尽可能分开
7.最大差异性的主成分方向?
通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值特征向量,选择特征值最大(即方差最大)的k个特征所对应的特征向量组成的矩阵
这样就可以将数据矩阵转换到新的空间当中,实现数据特征的降维
8.PCA的实现方式?
①基于特征值分解协方差矩阵实现PCA算法
输入:数据集X = {X1,X2,X3,...,Xn},需要降到k维
- 去平均值(即去中心化),即每一位特征减去各自的平均值
- 计算协方差矩阵,注:这里除样本数量n或n-1,其实对求出的特征向量没有影响
- 用特征值分解方法求协方差矩阵的特征值与特征向量
- 对特征值从大到小排序,选择其中最大的k个。然后将其对应的k个特征向量分别作为行向量组成特征向量矩阵p
- 将数据转换到k个特征向量构建的新空间中,即Y=PX
②基于SVD分解协方差矩阵实现PCA算法
输入:数据集X = {X1,X2,X3,...,Xn},需要降到k维
- 去平均值,即每一维特征减去各自的平均值
- 计算协方差矩阵
- 通过SVD计算协方差矩阵的特征值和特征向量
- 对特征值从大到小排序,选择其中最大的k个。然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵
- 将数据转换到k个特征向量构建的新空间中